Here is a code in C++:
#include <iostream>
#include<limits.h>
using namespace std;
void sign_extending(int x,unsigned b)
{
int r; // resulting sign-extended number
int const m = CHAR_BIT * sizeof(x) - b;
r = (x << m) >> m;
cout << r;
}
void Run()
{
unsigned b = 5; // number of bits representing the number in x
int x = 29; // sign extend this b-bit number to r
sign_extending(x,b);
}
Result : -3
The resulting number will be a signed number with its number of bits stored in b. I am trying to replicate this code in python :
from ctypes import *
import os
def sign_extending(x, b):
m = c_int(os.sysconf('SC_CHAR_BIT') * sizeof(c_int(x)) - b)
r = c_int((x << m.value) >> m.value) # Resulting sign-extended number
return r.value
b = c_int(5) # number of bits representing the number in x
x = c_int(29) # sign extend this b-bit number to r
r = sign_extending(x.value, b.value)
print r
Result : 29
I cannot get the sign extended number just like from the output in c++. I would like to know the error or problems in my current code(python) and also a possible solution to the issue using this technique.