Skip to content
geeksforgeeks
  • Tutorials
    • Python
    • Java
    • Data Structures & Algorithms
    • ML & Data Science
    • Interview Corner
    • Programming Languages
    • Web Development
    • CS Subjects
    • DevOps And Linux
    • School Learning
    • Practice Coding Problems
  • Courses
    • DSA to Development
    • Get IBM Certification
    • Newly Launched!
      • Master Django Framework
      • Become AWS Certified
    • For Working Professionals
      • Interview 101: DSA & System Design
      • Data Science Training Program
      • JAVA Backend Development (Live)
      • DevOps Engineering (LIVE)
      • Data Structures & Algorithms in Python
    • For Students
      • Placement Preparation Course
      • Data Science (Live)
      • Data Structure & Algorithm-Self Paced (C++/JAVA)
      • Master Competitive Programming (Live)
      • Full Stack Development with React & Node JS (Live)
    • Full Stack Development
    • Data Science Program
    • All Courses
  • DSA
  • Practice Bitwise Algorithms
  • MCQs on Bitwise Algorithms
  • Tutorial on Biwise Algorithms
  • Binary Representation
  • Bitwise Operators
  • Bit Swapping
  • Bit Manipulation
  • Count Set bits
  • Setting a Bit
  • Clear a Bit
  • Toggling a Bit
  • Left & Right Shift
  • Gray Code
  • Checking Power of 2
  • Important Tactics
  • Bit Manipulation for CP
  • Fast Exponentiation
Open In App
Next Article:
Case conversion (Lower to Upper and Vice Versa) of a string using BitWise operators in C/C++
Next article icon

Case conversion (Lower to Upper and Vice Versa) of a string using BitWise operators in C/C++

Last Updated : 18 Apr, 2024
Comments
Improve
Suggest changes
Like Article
Like
Report

Given a string, write a function that converts it either from lower to upper case or from upper to lower case using the bitwise operators &(AND), |(OR), ~(NOT) in place and returns the string. Many of us know that Bitwise manipulations are faster than performing arithmetic operations for a compiler as the data is stored in binary form 0's and 1's. Examples:

Input : "LowerToUpPer"
Output : "LOWERTOUPPER"
Letters already in the uppercase remains the same.
while rest get converted to uppercase.

Input : "UPPerTOloweR"
Output : "uppertolower"
Letters already in the lowercase remains the same.
while rest get converted to lowercase.

1.Lower to Upper Case This method simply subtracts a value of 32 from the ASCII value of lowercase letter by Bitwise ANDing (&) with negation (~) of 32 converting the letter to uppercase. 

Implementation:

CPP
// C++ program to convert a string from  // lower to upper case.  #include<stdio.h>   const int x = 32;   // Converts a string to uppercase  char *toUpperCase(char *a)  {      for (int i=0; a[i]!='\0'; i++)          a[i] = a[i] & ~x;       return a;  }   // Driver Code  int main()  {      char str[] = "SanjaYKannA";       //Here it's recommended to use character array      //as it's stored in read-write area.      //If a pointer is used it's stored      //in read-only memory as a string literal.       printf("%s", toUpperCase(str));       return 0;  }  
Java
public class Main {      static final int x = 32;      // Converts a string to uppercase     static String toUpperCase(String a) {         char[] chars = a.toCharArray();         for (int i = 0; i < chars.length; i++) {             chars[i] = (char) (chars[i] & ~x);         }         return new String(chars);     }      // Driver Code     public static void main(String[] args) {         String str = "SanjaYKannA";          // Here it's recommended to use a String         // as it's stored in the heap area.         // If a char array is used, it's stored         // in the stack as a string literal.          System.out.print(toUpperCase(str));     } } 
Python3
def to_upper_case(s):     result = ""     for char in s:         if 'a' <= char <= 'z':             result += chr(ord(char) & ~32)         else:             result += char     return result  # Driver code str = "SanjaYKannA" print(to_upper_case(str)) 
JavaScript
// Converts a string to uppercase function toUpperCase(str) {     let result = '';     const x = 32; // ASCII difference between uppercase and lowercase letters     for (let i = 0; i < str.length; i++) {         const charCode = str.charCodeAt(i);         // Convert lowercase letters to uppercase by adding the ASCII difference         // Note: this assumes the input string only contains lowercase letters         result += String.fromCharCode(charCode & ~x);     }     return result; }  // Driver Code function main() {     const str = "SanjaYKannA";     console.log(toUpperCase(str)); }  main(); 

Output
SANJAYKANNA

Time complexity : O(n) 
Auxiliary Space : O(1) 

2.Upper to Lower Case Similarly, it adds a value of 32 to the ASCII value of uppercase letter by Bitwise ORing (|) with 32 converting the letter to lowercase. 

Implementation:

CPP
// C++ program to convert a string from  // upper to lower case.  #include<stdio.h>  const int x = 32;   // Converts a string to lowercase  char * toLowerCase(char *a)  {      for (int i=0; a[i]!='\0'; i++)          a[i] = a[i] | x;       return a;  }   // Driver Code  int main()  {      char str[] = "SanjaYKannA";      printf("%s", toLowerCase(str));      return 0;  }  
Java
public class Main {     // Constant value for converting uppercase to lowercase     static final int x = 32;      // Converts a string to lowercase     static String toLowerCase(String str) {         char[] chars = str.toCharArray();         // Iterate through each character in the string         for (int i = 0; i < chars.length; i++) {             // Check if the character is an uppercase letter             if (Character.isUpperCase(chars[i])) {                 // Convert the uppercase letter to lowercase using ASCII manipulation                 chars[i] = (char) (chars[i] | x);             }         }         // Convert the character array back to a string and return         return new String(chars);     }      // Main method     public static void main(String[] args) {         // Input string         String str = "SanjaYKannA";         // Convert the string to lowercase and print         System.out.println(toLowerCase(str));     } } 
Python3
# code def gfg(string):     # Initialize an empty string to store the lowercase result     result = ''     # Loop through each character in the input string     for char in string:         # Check if the character is uppercase         if 'A' <= char <= 'Z':             result += chr(ord(char) + 32)         else:             # If the character is not uppercase, add it to the result as it is             result += char     # Return the resulting lowercase string     return result  # Test the function string = "SanjaYKannA" print(gfg(string)) 
JavaScript
function GFG(str) {     // Initialize an empty string to the store the lowercase result     let result = '';     // Loop through each character in input string     for (let i = 0; i < str.length; i++) {         // Check if the character is uppercase         if (str[i] >= 'A' && str[i] <= 'Z') {             result += String.fromCharCode(str.charCodeAt(i) + 32);         } else {             // If the character is not uppercase, add it to result as it is             result += str[i];         }     }     // Return the resulting lowercase string     return result; } // Test the function let str = "SanjaYKannA"; console.log(GFG(str)); 

Output
sanjaykanna

Time complexity : O(n) 
Auxiliary Space : O(1) 

Explanation: The ASCII table is constructed in such way that the binary representation of lowercase letters is almost identical of binary representation of uppercase letters. Character ‘A’ is integer 65 = (0100 0001)2, while character ‘a’ is integer 97 = (0110 0001)2. The difference between the ASCII values of 'a' and 'A' is 32. So we can easily change the case of the letters either from Upper to lower or lower to upper by adding or subtracting the difference from the letters using bitwise operators as shown above. 

Exercise: Implement a function that change the case of a string such that GeeksFoRgeekS turns gEEKSfOrGEEKs .   


Next Article
Case conversion (Lower to Upper and Vice Versa) of a string using BitWise operators in C/C++

K

kartik
Improve
Article Tags :
  • Strings
  • Bit Magic
  • DSA
  • Basic Coding Problems
  • school-programming
  • CBSE - Class 11
Practice Tags :
  • Bit Magic
  • Strings

Similar Reads

    Conversion of whole String to uppercase or lowercase using STL in C++
    Given a string, convert the whole string to uppercase or lowercase using STL in C++. Examples: For uppercase conversionInput: s = "String"Output: s = "STRING" For lowercase conversionInput: s = "String"Output: s = "string" Functions used : transform : Performs a transformation on given array/string.
    1 min read
    Toggle case of a string using Bitwise Operators
    Given a string, write a function that returns toggle case of a string using the bitwise operators in place.In ASCII codes, character ‘A’ is integer 65 = (0100 0001)2, while character ‘a’ is integer 97 = (0110 0001)2. Similarly, character 'D' is integer 68 = (0100 0100)2, while character 'd' is integ
    4 min read
    How to create half of the string in uppercase and the other half in lowercase?
    The first thing that we have to keep in my mind while solving this kind of problem is that the strings are immutable i.e, If I am taking the following string var string1 = "geeksforgeeks";string1[0] = "G";console.log(string1);As strings are immutable, so we cannot change the character of the string,
    9 min read
    Check string for all uppercase-lowercase or first uppercase and rest lowercase characters
    Given a string S, the task is to check if all the characters in S are in lowercase, or all the characters are in uppercase or only the first character is in uppercase, and the remaining characters are in lowercase. Print "YES" if any of the condition gets satisfied else print "NO". Examples: Input:
    6 min read
    Count of Reverse Bitonic Substrings in a given String
    Given a string S, the task is to count the number of Reverse Bitonic Substrings in the given string. Reverse bitonic substring: A string in which the ASCII values of the characters of the string follow any of the following patterns: Strictly IncreasingStrictly decreasingDecreasing and then increasin
    8 min read
geeksforgeeks-footer-logo
Corporate & Communications Address:
A-143, 7th Floor, Sovereign Corporate Tower, Sector- 136, Noida, Uttar Pradesh (201305)
Registered Address:
K 061, Tower K, Gulshan Vivante Apartment, Sector 137, Noida, Gautam Buddh Nagar, Uttar Pradesh, 201305
GFG App on Play Store GFG App on App Store
Advertise with us
  • Company
  • About Us
  • Legal
  • Privacy Policy
  • In Media
  • Contact Us
  • Advertise with us
  • GFG Corporate Solution
  • Placement Training Program
  • Languages
  • Python
  • Java
  • C++
  • PHP
  • GoLang
  • SQL
  • R Language
  • Android Tutorial
  • Tutorials Archive
  • DSA
  • Data Structures
  • Algorithms
  • DSA for Beginners
  • Basic DSA Problems
  • DSA Roadmap
  • Top 100 DSA Interview Problems
  • DSA Roadmap by Sandeep Jain
  • All Cheat Sheets
  • Data Science & ML
  • Data Science With Python
  • Data Science For Beginner
  • Machine Learning
  • ML Maths
  • Data Visualisation
  • Pandas
  • NumPy
  • NLP
  • Deep Learning
  • Web Technologies
  • HTML
  • CSS
  • JavaScript
  • TypeScript
  • ReactJS
  • NextJS
  • Bootstrap
  • Web Design
  • Python Tutorial
  • Python Programming Examples
  • Python Projects
  • Python Tkinter
  • Python Web Scraping
  • OpenCV Tutorial
  • Python Interview Question
  • Django
  • Computer Science
  • Operating Systems
  • Computer Network
  • Database Management System
  • Software Engineering
  • Digital Logic Design
  • Engineering Maths
  • Software Development
  • Software Testing
  • DevOps
  • Git
  • Linux
  • AWS
  • Docker
  • Kubernetes
  • Azure
  • GCP
  • DevOps Roadmap
  • System Design
  • High Level Design
  • Low Level Design
  • UML Diagrams
  • Interview Guide
  • Design Patterns
  • OOAD
  • System Design Bootcamp
  • Interview Questions
  • Inteview Preparation
  • Competitive Programming
  • Top DS or Algo for CP
  • Company-Wise Recruitment Process
  • Company-Wise Preparation
  • Aptitude Preparation
  • Puzzles
  • School Subjects
  • Mathematics
  • Physics
  • Chemistry
  • Biology
  • Social Science
  • English Grammar
  • Commerce
  • World GK
  • GeeksforGeeks Videos
  • DSA
  • Python
  • Java
  • C++
  • Web Development
  • Data Science
  • CS Subjects
@GeeksforGeeks, Sanchhaya Education Private Limited, All rights reserved
We use cookies to ensure you have the best browsing experience on our website. By using our site, you acknowledge that you have read and understood our Cookie Policy & Privacy Policy
Lightbox
Improvement
Suggest Changes
Help us improve. Share your suggestions to enhance the article. Contribute your expertise and make a difference in the GeeksforGeeks portal.
geeksforgeeks-suggest-icon
Create Improvement
Enhance the article with your expertise. Contribute to the GeeksforGeeks community and help create better learning resources for all.
geeksforgeeks-improvement-icon
Suggest Changes
min 4 words, max Words Limit:1000

Thank You!

Your suggestions are valuable to us.

What kind of Experience do you want to share?

Interview Experiences
Admission Experiences
Career Journeys
Work Experiences
Campus Experiences
Competitive Exam Experiences