I am finishing my Informatics assignment and I wrote these for my question:
Create a variable s with a value of 154 and a variable p with a value of 6. Display its values in decimal and binary form on the screen.
s=154
p=6
bs=bin(s)
bp=bin(p)
print("In decimal form, s =",s,"and p =",p)
print("In binary form, s =",bs[2:],"and p =",bp[2:])
Perform a bitwise OR operation on the variables s and p and write the result to the variable s. Output the value in decimal and binary form to the screen.
s=s|p
bsp=bin(s)
print("In decimal form, the value is",s)
print("In binary form, the value is",bsp[2:])
Perform the operation of bitwise shift to the right by 2 bits on the variables s and p with the recording of the results in the corresponding variables. Display the values in decimal and binary form on the screen.
#print(s)
sbutshift2digit=s>>2
binsshift=bin(sbutshift2digit)
pbutshift2digit=p>>2
binpshift=bin(pbutshift2digit)
print("for the operation of bitwise shift to the right by 2 bits on the variables s, the value in decimal is",sbutshift2digit)
print("for the operation of bitwise shift to the right by 2 bits on the variables s, the value in binary is",binsshift[2:])
print("\n")
print("for the operation of bitwise shift to the right by 2 bits on the variables s, the value in decimal is",pbutshift2digit)
print("for the operation of bitwise shift to the right by 2 bits on the variables s, the value in binary is",binpshift[2:])
Here's the result of my third part of code:
for the operation of bitwise shift to the right by 2 bits on the variables s, the value in decimal is 39
for the operation of bitwise shift to the right by 2 bits on the variables s, the value in binary is 100111
for the operation of bitwise shift to the right by 2 bits on the variables s, the value in decimal is 1
for the operation of bitwise shift to the right by 2 bits on the variables s, the value in binary is 1
The problem is, for the operation of bitwise shift to the right by 2 bits on the variables s, the value in decimal should be 38, not 39. I don't really know what goes wrong......
You're overriding your variables. After you perform the bitwise
OR, the variablesis now 158, not 154. You're then performing your bitshift on this new value instead of the original one. To fix it you just need to resetsandpbetween your operations: